/*
 * Copyright 2010 Katsunori Koyanagi
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package sweezy.anim.impl
{

	internal class RoundTripAnimation extends AnimationDecoratorBase
	{

		private var _realDuration:uint;

		public function RoundTripAnimation(manager:AnimationManager, animation:AnimationBase)
		{
			super(manager, animation);
		}

		override protected function get animationName():String
		{
			return "RoundTrip";
		}

		override protected function onInitializeInternal():void
		{
			_targetAnimation.initialize();
			_realDuration = _targetAnimation._duration;
			_duration = normalizeDuration(_targetAnimation._duration * 2);
		}

		override protected function onUpdateInternal():void
		{
			var p:int = _position - _realDuration;
			_targetAnimation.position = _realDuration - ((p ^ (p >> 31)) - (p >> 31));
		}
	}
}
